#include<stdio.h>
#include <iostream>
using namespace std;
typedef struct lnode
{
    int data;
    struct lnode *next;
}*linklist,lnode;
void createlinklist(linklist &l);
void connectlinklist(linklist &a,linklist &b,linklist &c);
void displaylinklist(linklist &l);
int main()
{
    linklist a,b,c;
    a=new lnode;
    b=new lnode;
    c=new lnode;
    createlinklist(a);
    createlinklist(b);
  connectlinklist(a,b,c);
     displaylinklist(c);


}
void createlinklist(linklist &l)
{
    l=new lnode;
    linklist s,r;
    r=l;
    int e=0;
    cin>>e;
    if(e!=-1)
    {
      do
    {
        s=new lnode;
        s->data=e;
        r->next=s;
        r=s;
        cin>>e;
    }while(e!=-1);
    }

    r->next=NULL;
}
void displaylinklist(linklist &l)
{
    linklist p;
    p=l->next;
    if(p==NULL)
    {
        printf("NULL");
    }
    else
    {
         while(p!=0)
    {
        if(p->next!=0)
        printf("%d ",p->data);
        else
        printf("%d\n",p->data);
        p=p->next;
    }
    }

}
void connectlinklist(linklist &a,linklist &b,linklist &c)
{
    linklist pa,pb,r,s;
    c=new lnode;
    pa=a->next;
    pb=b->next;
    r=c;
    if(pa==NULL&&pb==NULL)
        c->next=NULL;

        while(pa!=NULL&&pb!=NULL)
    {
        if(pa->data<=pb->data)
        {

            s=new lnode;
            s->data=pa->data;
            r->next=s;
            r=s;
            pa=pa->next;
        }
        else
        {
            s=new lnode;
            s->data=pb->data;
            r->next=s;
            r=s;
            pb=pb->next;
        }
    }
    if(pa!=NULL)
    {
        r->next=pa;
    }
    if(pb!=NULL)
    {
        r->next=pb;
    }

}

